CC = gcc
CFLAGS = -Wall -O2
PROJ = lsq
SRCDIR = src
DOCDIR = doc
GENDATA = lsq_data
DATA = testdata.txt
IMAGE = $(DOCDIR)/output.eps
REF = $(DOCDIR)/references.bib

.PHONY: all exe doc clean

all: exe doc

exe: $(PROJ) $(GENDATA) $(DATA)

$(PROJ): $(SRCDIR)/$(PROJ).c
	$(CC) $(CFLAGS) -o $(PROJ) $(SRCDIR)/$(PROJ).c

$(GENDATA): $(SRCDIR)/$(GENDATA).c
	$(CC) $(CFLAGS) -o $(GENDATA) $(SRCDIR)/$(GENDATA).c

$(DATA): $(GENDATA)
	./$(GENDATA)
	./$(PROJ)

$(IMAGE): $(DATA) $(PROJ).gp
	gnuplot $(PROJ).gp

$(PROJ).gp:
	echo "set terminal eps" > $(PROJ).gp
	echo "set output \"$(IMAGE)\"" >> $(PROJ).gp
	echo "plot \"output.dat\" using 1:2 title \"Data Points\"" >> $(PROJ).gp
	echo "unset output" >> $(PROJ).gp

doc: $(DOCDIR)/$(PROJ).pdf $(DOCDIR)/$(PROJ)_slide.pdf

$(DOCDIR)/$(PROJ).pdf: $(DOCDIR)/$(PROJ).tex $(IMAGE) $(REF)
	cd $(DOCDIR) && xelatex $(PROJ) && bibtex $(PROJ) && xelatex $(PROJ) && xelatex $(PROJ)

$(DOCDIR)/$(PROJ)_slide.pdf: $(DOCDIR)/$(PROJ)_slide.tex $(IMAGE)
	cd $(DOCDIR) && xelatex $(PROJ)_slide

clean:
	rm -f $(DOCDIR)/*.aux $(DOCDIR)/*.bbl $(DOCDIR)/*.blg $(DOCDIR)/*.log $(DOCDIR)/*.out $(DOCDIR)/*.pdf $(DOCDIR)/*.toc \
	$(PROJ) $(GENDATA) $(DATA) $(IMAGE) $(PROJ).gp output.dat \
	$(DOCDIR)/*.nav $(DOCDIR)/*.snm $(DOCDIR)/*.dat

